package com.company.ljh.easy;

public class 汉明距离 {
    public int hammingDistance(int x, int y) {
        int distince = 0;
        int data = x^y;
        while (data!=0){
            /**
             * 1.右移法
             */
//            if ((data&1) == 1){
//                distince++;
//            }
//
//            data = data >>1;
            /**
             *2.Brian Kernighan 算法 只计算1，不计算0
             *  f(x)=x & (x−1)，
             *  那么 f(x)f(x) 恰为 x 删去其二进制表示中最右侧的 1 的结果
             */
            data &=data-1;
            distince++;
        }
        return distince;
    }
}
